/**
 * 文件名：@AbstractValidator.java <br/>
 * 包名：cn.efunbox.afw.core.validation <br/>
 * 项目名：afw-core <br/>
 * @author xtwin <br/>
 */
package cn.efunbox.afw.core.validation;

import cn.efunbox.afw.core.mvc.context.Context;

/**
 * 类名：AbstractValidator  <br />
 *
 * 功能：校验器基础实现
 *
 * @author xtwin <br />
 * 创建时间：2015年12月2日 下午2:59:06  <br />
 * @version 2015年12月2日
 */
public abstract class AbstractValidator implements Validator {
	
	// 错误码
	protected String code;
	
	// 错误消息
	protected String message;
	
	/**
	 * 构造方法
	 */
	public AbstractValidator(String message) {
		this.message = message;
	}

	/**
	 * 功能: <br/>
	 * 
	 * 重写：xtwin <br/>
	 * 
	 * @version ：2015年12月2日 下午2:59:21<br/>
	 * 
	 * @param field
	 * @param value
	 * @param message
	 * @param config
	 * @return
	 * @throws Exception <br/>
	 * @see cn.efunbox.afw.core.validation.Validator#validate(cn.efunbox.afw.core.mvc.context.Context, java.lang.String, java.lang.Object, java.lang.String, java.lang.Object)
	 */
	@Override
	public Object validate(Context context, String field, Object value, String message, Object config) throws Exception {
		
		// 执行校验
		doValidate(context, field, value, message, config);
		
		return value;
	}

	/**
	 * 
	 * 功能：由子类实现具体的校验逻辑 <br/>
	 *
	 * @author xtwin <br/>
	 * @version 2015年12月2日 下午3:00:05 <br/>
	 */
	protected abstract void doValidate(Context context, String field, Object value, String message, Object config) throws Exception;

	/**
	 * @version 2015年12月2日-下午3:02:48
	 */
	public void setMessage(String message) {
		this.message = message;
	}

	/**
	 * @version 2015年12月8日-上午11:48:21
	 */
	public void setCode(String code) {
		this.code = code;
	}
}
